/* * Copyright (C) 2015 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.cleverbus.common.log; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import org.slf4j.helpers.FormattingTuple; import org.slf4j.helpers.MessageFormatter; /** * This class provides access to logging facilities. * * @author <a href="mailto:michal.palicka@cleverlance.com">Michal Palicka</a> * @author <a href="mailto:jan.loose@cleverlance.com">Jan Loose</a> * @version $Id: Log.java 8499 2012-04-16 17:10:32Z jloose@CLANCE.LOCAL $ */ public final class Log { // ---------------------------------------------------------------------- // util // ---------------------------------------------------------------------- private static String getLogger() { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); String logger = Logger.ROOT_LOGGER_NAME; int i = 3; if (stackTrace.length >= i) { logger = stackTrace[i++].getClassName(); while (logger.startsWith(Log.class.getName()) && (i <= stackTrace.length) && (i <= 7)) { logger = stackTrace[i++].getClassName(); } } return logger; } // ---------------------------------------------------------------------- // logging level status // ---------------------------------------------------------------------- public static boolean isDebugEnabled() { return LoggerFactory.getLogger(getLogger()).isDebugEnabled(); } public static boolean isDebugEnabled(String loggerName) { return LoggerFactory.getLogger(loggerName).isDebugEnabled(); } public static boolean isInfoEnabled() { return LoggerFactory.getLogger(getLogger()).isInfoEnabled(); } public static boolean isInfoEnabled(String loggerName) { return LoggerFactory.getLogger(loggerName).isInfoEnabled(); } public static boolean isWarnEnabled() { return LoggerFactory.getLogger(getLogger()).isWarnEnabled(); } public static boolean isWarnEnabled(String loggerName) { return LoggerFactory.getLogger(loggerName).isWarnEnabled(); } public static boolean isErrorEnabled() { return LoggerFactory.getLogger(getLogger()).isErrorEnabled(); } public static boolean isErrorEnabled(String loggerName) { return LoggerFactory.getLogger(loggerName).isErrorEnabled(); } // ---------------------------------------------------------------------- // debug // ---------------------------------------------------------------------- public static void debug(String message) { LoggerFactory.getLogger(getLogger()).debug(message); } public static void debug(String message, Object... values) { LoggerFactory.getLogger(getLogger()).debug(message, values); } public static void debug(String message, Throwable t) { LoggerFactory.getLogger(getLogger()).debug(message, t); } public static void debug(String message, Throwable t, Object... values) { if (isDebugEnabled()) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(getLogger()).debug(ft.getMessage(), t); } } public static void debugTo(String loggerName, String message) { LoggerFactory.getLogger(loggerName).debug(message); } public static void debugTo(String loggerName, String message, Object... values) { LoggerFactory.getLogger(loggerName).debug(message, values); } public static void debugTo(String loggerName, String message, Throwable t) { LoggerFactory.getLogger(loggerName).debug(message, t); } public static void debugTo(String loggerName, String message, Throwable t, Object... values) { if (isDebugEnabled(loggerName)) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(loggerName).debug(ft.getMessage(), t); } } // ---------------------------------------------------------------------- // info // ---------------------------------------------------------------------- public static void info(String message) { LoggerFactory.getLogger(getLogger()).info(message); } public static void info(String message, Throwable t) { LoggerFactory.getLogger(getLogger()).info(message, t); } public static void info(String message, Object... values) { LoggerFactory.getLogger(getLogger()).info(message, values); } public static void info(String message, Throwable t, Object... values) { if (isInfoEnabled()) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(getLogger()).info(ft.getMessage(), t); } } public static void infoTo(String loggerName, String message) { LoggerFactory.getLogger(loggerName).info(message); } public static void infoTo(String loggerName, String message, Object... values) { LoggerFactory.getLogger(loggerName).info(message, values); } public static void infoTo(String loggerName, String message, Throwable t) { LoggerFactory.getLogger(loggerName).info(message, t); } public static void infoTo(String loggerName, String message, Throwable t, Object... values) { if (isInfoEnabled(loggerName)) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(loggerName).info(ft.getMessage(), t); } } // ---------------------------------------------------------------------- // warn // ---------------------------------------------------------------------- public static void warn(String message) { LoggerFactory.getLogger(getLogger()).warn(message); } public static void warn(String message, Object... values) { LoggerFactory.getLogger(getLogger()).warn(message, values); } public static void warn(String message, Throwable t) { LoggerFactory.getLogger(getLogger()).warn(message, t); } public static void warn(String message, Throwable t, Object... values) { if (isWarnEnabled()) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(getLogger()).warn(ft.getMessage(), t); } } public static void warnTo(String loggerName, String message) { LoggerFactory.getLogger(loggerName).warn(message); } public static void warnTo(String loggerName, String message, Object... values) { LoggerFactory.getLogger(loggerName).warn(message, values); } public static void warnTo(String loggerName, String message, Throwable t) { LoggerFactory.getLogger(loggerName).warn(message, t); } public static void warnTo(String loggerName, String message, Throwable t, Object... values) { if (isWarnEnabled(loggerName)) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(loggerName).warn(ft.getMessage(), t); } } // ---------------------------------------------------------------------- // error // ---------------------------------------------------------------------- public static void error(String message) { LoggerFactory.getLogger(getLogger()).error(message); } public static void error(String message, Object... values) { LoggerFactory.getLogger(getLogger()).error(message, values); } public static void error(String message, Throwable t) { LoggerFactory.getLogger(getLogger()).error(message, t); } public static void error(String message, Throwable t, Object... values) { if (isErrorEnabled()) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(getLogger()).error(ft.getMessage(), t); } } public static void errorTo(String loggerName, String message) { LoggerFactory.getLogger(loggerName).error(message); } public static void errorTo(String loggerName, String message, Object... values) { LoggerFactory.getLogger(loggerName).error(message, values); } public static void errorTo(String loggerName, String message, Throwable t) { LoggerFactory.getLogger(loggerName).error(message, t); } public static void errorTo(String loggerName, String message, Throwable t, Object... values) { if (isErrorEnabled(loggerName)) { FormattingTuple ft = MessageFormatter.arrayFormat(message, values); LoggerFactory.getLogger(loggerName).error(ft.getMessage(), t); } } // ---------------------------------------------------------------------- // context // ---------------------------------------------------------------------- public static String getContextValue(String key) { return MDC.get(key); } public static void setContextValue(String key, String value) { MDC.put(key, value); } public static void removeContextValue(String key) { MDC.remove(key); } public static void clearContext() { MDC.clear(); } // ---------------------------------------------------------------------- // constructors // ---------------------------------------------------------------------- /** * Prevents instantiation. */ private Log() { // empty } }